_Pragma("once");

#include <string>
#include <vector>

#include "HalUtility.h"

struct LoopGroupInfo {
public:
    LoopGroupInfo(const std::string& groupName, const int firstIndexInLoopManager, const int channel, const int portCount, int const firstIndexInSlave) {
        this->groupName = groupName;
        this->firstIndexInLoopManager = firstIndexInLoopManager;
        this->channel = channel;
        this->portCount = portCount;
        this->firstIndexInSlave = firstIndexInSlave;
    }

    ~LoopGroupInfo();


    /**
     * @return （0/1）
     */
//    std::string getLoopStatus() {
//
//        int[] statusInts = LoopManager.getInstance().getLoopStatus();
//        String status = StringUtil.commandInt2String(statusInts).substring(this.getFirstIndexInLoopManager() - 1,
//                        this.getFirstIndexInLoopManager() - 1 + this.getSwitchSize());
//        return status;
//    }


//    int operator < (const LoopGroupInfo& rhs) {
//        return 0;
//    }


    std::string groupName;
    /**
     * loopManager中的序号
     * 第一位开关在所有开关中的序号
     * 从1开始
     */
    LoopSize_t firstIndexInLoopManager;
    /**
     * 如 airSwitch_slave1 中的第1位
     * loopcontroller 中的第13位
     * 第一位开关在所在设备的序号
     */
    LoopSize_t firstIndexInSlave;
    /**
     * 本组所在扩展通道
     */

    /**
     * 本组的开关数量 规模（最大为DEFAULT_LED_SIZE）
     */
    LoopSize_t portCount;

    int channel;
};


typedef std::vector<LoopGroupInfo> LoopGroupInfos;
